package com.linkstec.musiccloud.mapper;

import java.util.List;

import com.linkstec.musiccloud.pojo.ListSongUser;
import com.linkstec.musiccloud.pojo.ListenTime;
import com.linkstec.musiccloud.pojo.Song;
import com.linkstec.musiccloud.util.Page;
import com.linkstec.musiccloud.vo.SongVo;
import com.linkstec.musiccloud.vo.SongVos;

public interface SongMapper {


	List<Song> selectSongByType(int type);
	/**
	 * 
	 * @Description:TODO 模糊查询搜索歌曲
	 * @author: xulisa
	 * @date:   2018年11月23日 下午4:56:41    
	 * @param songName
	 * @return
	 */
	List<Song> selectSong(Song songName);

	/**     
	 * @Description:TODO 通过id查找歌曲
	 * @author: shuaibizhe
	 * @date:   2018年11月23日 下午4:14:53    
	 * @param songId
	 * @return      
	 */  
	Song selectSongById(int songId);
	
	/**     
	 * @Description:TODO 点击歌单出现对应歌曲
	 * @author: shuaibizhe
	 * @date:   2018年11月23日 下午8:42:58    
	 * @param listSongUser
	 * @return      
	 */  
	List<SongVos> selectSongByList(ListSongUser listSongUser);
	

	/**
	 * @Description:TODO查询所有歌曲
	 * @author liujinhui
	 * @date:2018年11月24日下午3:12:23
	 * @param state
	 * @return
	 */
	List<SongVo> selectAllSong(Page page);

	/**     
	 * @Description:TODO 增加歌曲点击量
	 * @author: shuaibizhe
	 * @date:   2018年11月24日 下午1:38:51    
	 * @param songId      
	 */  
	void addSongCounts(int songId);
	
	/**     
	 * @Description:TODO热歌榜
	 * @author: shuaibizhe
	 * @date:   2018年11月24日 下午1:58:08    
	 * @return      
	 */  
	List<Song> selectSongByCounts();
	
	/**     
	 * @Description:TODO新歌榜
	 * @author: shuaibizhe
	 * @date:   2018年11月24日 下午2:38:48    
	 * @return      
	 */  
	List<Song> selectSongByCreate();
	

	/**
	 * @Description:TODO添加新歌
	 * @author liujinhui
	 * @date:2018年11月24日下午4:22:19
	 * @param song
	 */
	void mSongAdd(Song song);



	/**     
	 * @Description:TODO 查找歌曲总数
	 * @author: shuaibizhe
	 * @date:   2018年11月24日 下午4:18:22    
	 * @return      
	 */  
	int selectAllSongCounts();
	
	/**     
	 * @Description:TODO 随机十首歌的信息
	 * @author: shuaibizhe
	 * @date:   2018年11月24日 下午4:30:49    
	 * @param arr      
	 * @return 
	 */  
	List<Song> selectSongByRandom(int[] arr);
	
	/**     
	 * @Description:TODO 热评榜
	 * @author: shuaibizhe
	 * @date:   2018年11月26日 上午9:28:45    
	 * @return      
	 */  
	List<Song> selectSongByComment();
	
	/**
	 * @Description:TODO 删除歌曲
	 * @author liujinhui
	 * @date:2018年11月24日下午6:15:45
	 * @param song
	 */
	void deleteSongs(Song song);
	
	/**
	 * @Description:TODO修改歌曲信息
	 * @author liujinhui
	 * @date:2018年11月25日下午2:53:18
	 * @param song
	 */
	void mSongUpdate(Song song);
	
	/**
	 * @Description:TODO根据歌手名模糊查找歌曲
	 * @author liujinhui
	 * @date:2018年11月25日下午4:35:21
	 * @param search
	 * @return
	 */
	List<SongVo> selectSongsBySinger(String search);
	
	/**
	 * @Description:TODO根据歌曲名模糊查找歌曲
	 * @author liujinhui
	 * @date:2018年11月25日下午4:41:44
	 * @param search
	 * @return
	 */
	List<SongVo> selectSongsByName(String search);
	
	/**     
	 * @Description:TODO 查找歌手
	 * @author: shuaibizhe
	 * @date:   2018年11月26日 下午3:12:50    
	 * @param singer
	 * @return      
	 */  
	List<Song> selectSinger(String singer);
	
	/**     
	 * @Description:TODO 上传歌曲
	 * @author: shuaibizhe
	 * @date:   2018年11月27日 上午10:13:29    
	 * @param song      
	 */  
	void insertSong(Song song);
	
	/**
	 * @Description:TODO查找待审核的歌曲
	 * @author liujinhui
	 * @date:2018年11月26日上午11:58:11
	 * @param state
	 * @return
	 */
	List<SongVo> selectVatSongs(int state);
	
	/**
	 * @Description:TODO提交审核歌曲
	 * @author liujinhui
	 * @date:2018年11月26日下午2:09:31
	 * @param ids
	 */
	void submitSongs(int[] ids);
	
	
	/**
	 * @Description:TODO查询所有歌曲
	 * @author liujinhui
	 * @date:2018年11月26日下午2:42:05
	 * @return
	 */
	List<SongVo> getAllSongs();
	
	/**
	 * @Description:TODO根据ID查询歌曲
	 * @author liujinhui
	 * @date:2018年11月27日下午2:16:14
	 * @param song
	 * @return
	 */
	SongVo getSongVoById(SongVo song);
	
	/**
	 * @Description:TODO 查询历史听歌时间
	 * @author: xulisa
	 * @date:   2018年11月27日 上午11:43:20    
	 * @param ltime
	 * @return
	 */
	int selectTime(ListenTime ltime);
	
	/**
	 * @Description:TODO新增历史听歌时间
	 * @author: xulisa
	 * @date:   2018年11月27日 上午11:43:41    
	 * @param ltime
	 */
	void addTime(ListenTime ltime);
	
	/**
	 * @Description:TODO修改历史听歌时间
	 * @author: xulisa
	 * @date:   2018年11月27日 上午11:43:46    
	 * @param ltime
	 */
	void upTime(ListenTime ltime);
	
	/**
	 * @Description:TODO历史听歌记录
	 * @author: xulisa
	 * @date:   2018年11月27日 下午2:34:55    
	 * @param userId
	 * @return
	 */
	List<Song> selectHistory(int userId);

}
